package mististore;
import java.util.List;  
import javax.jdo.PersistenceManager;  
import javax.jdo.Query;  


public class ProductoDatos
{
	
	private static final int FETCH_MAX_RESULTS=100;  
      
    /** 
     * Almacenamiento de un nuevo tutorial 
     * @param autor nombre del autor 
     * @param tituloTutorial titulo del tutorial 
     */  
    public static void insert(final String n, final Float p, final String d, final String i, final Integer cntd, final String cat,final String m){  
          
        // recuperacion del gestor de persistencia de JDO  
        final PersistenceManager persistenceManager = PMF.get().getPersistenceManager();  
          
        // creamos un nuevo tutorial y los insertamos en el datastore  
        final Producto producto = new Producto(n,p,d,i,cntd,cat,m);        
        persistenceManager.makePersistent(producto);  
    }   
    /** 
     * Recuperación de los últimos 10 tutoriales (FETCH_MAX_RESULTS) 
     * @return una lista con los últimos 10 tutoriales 
     */  
    @SuppressWarnings("unchecked")  
    public List<Producto> getDatosPor(String str)
    {
        // recuperación del gestor de persistencia de JDO  
        final PersistenceManager persistenceManager=PMF.get().getPersistenceManager();  
 
        // generación de la consulta y configuración de la ordenación de los resultados de la misma  
        final Query query=persistenceManager.newQuery(Producto.class);
        query.setOrdering("cantidad ascending");
        query.setRange(0,FETCH_MAX_RESULTS);  

        /*List<Producto> rpta=(List<Producto>)query.execute();
        java.util.Collections.shuffle(rpta);
        return rpta;*/
        return (List<Producto>)query.execute();
    }  
    
    
    
    @SuppressWarnings("unchecked")  
    public static List<Producto> filtrarPorCategoria(String Cate, String OrdPor )
    {
        // recuperación del gestor de persistencia de JDO
        final PersistenceManager persistenceManager = PMF.get().getPersistenceManager();  

        Query query = persistenceManager.newQuery(Producto.class);
        query.setFilter("categoria == '"+Cate+"'");
        query.setOrdering(OrdPor);
        //query.declareParameters("String "+ Filpor);
        query.setRange(0, FETCH_MAX_RESULTS);  
          
        // devolución de resultados  
        return (List<Producto>) query.execute();
    }  
    
    @SuppressWarnings("unchecked")  
    public static List<Producto> filtrarPorMarca(String Mar, String OrdPor ) {
        // recuperación del gestor de persistencia de JDO  
        final PersistenceManager persistenceManager = PMF.get().getPersistenceManager();  

        Query query = persistenceManager.newQuery(Producto.class);
        //String ee="nombre == 'Advance'";
        //System.out.println("nombre == 'Sony'");
        
        //Query query = persistenceManager.newQuery(Producto.class,
        //        "("+ee+")");
        query.setFilter("marca == '"+Mar+"'");
        query.setOrdering(OrdPor);
        //query.declareParameters("String "+"Sony");
        query.setRange(0, FETCH_MAX_RESULTS);  
          
        // devolución de resultados  
        return (List<Producto>) query.execute();
    }
    
    
    @SuppressWarnings("unchecked")  
    public static List<Producto> filtrarPorNombre(String Nom)
    {
        // recuperación del gestor de persistencia de JDO  
        final PersistenceManager persistenceManager = PMF.get().getPersistenceManager();  

        Query query = persistenceManager.newQuery(Producto.class);
        query.setFilter("nombre == '"+Nom+"'");
        query.setRange(0,FETCH_MAX_RESULTS);
        return (List<Producto>)query.execute();
    }  
    
    @SuppressWarnings("unchecked")  
    public static List<Producto> filtrarPorCategoriaMarca(String cate, String marca ) {
        // recuperación del gestor de persistencia de JDO  
        final PersistenceManager persistenceManager = PMF.get().getPersistenceManager();  

        Query query = persistenceManager.newQuery(Producto.class);
        query.setFilter("categoria == '"+cate+"' && marca=='"+marca+"'");
        query.setOrdering("nombre");
        query.setRange(0, FETCH_MAX_RESULTS);  
          
        // devolución de resultados  
        return (List<Producto>) query.execute();
    } 
}
